<?php

class LessonController extends Controller
{	
	public $layout = '//layouts/pageBlock'; // set template หรือ layouts
	
	// default action
	public function actionIndex()
	{
		$this->redirect($this->createUrl('search'));
	}
	
	public function actionView($id)
	{
		//ค้นหาและสร้าง Object lesson ขึ้นมาหากไม่พบ จะ redirect ไปยังหน้า home
		//with เหมือนการ join ตาราง
		$lesson = Lesson::model()->with('chapters')->findByPk(array($id));
		if($lesson === null){
			$this->redirect($this->createUrl('site/home'));
		}
		
		//ถ้าเป็นเจ้าของ lesson หรือเป็น Admin สารมารถเข้าไปดูใน view ของ Owner ได้ (จะมีฟังก์ชั่นให้แก้ไขเพิ่มเติมได้)
		if(Yii::app()->user->isAdmin || $lesson->isOwner()){
			$this->render('viewOwner',array('lesson'=>$lesson));
			Yii::app()->end();
		}
		
		//ถ้าไม่ใช่เจ้าของ lesson หรือ Admin จะเข้าสู่กระบวการตรวจสอบ password
		else{
			
			//ตรวจสอบว่าถ้ายังไม่เคยใส่ password ของ lesson นี้จะให้ใส่ password ก่อน
			//หากใส่ password ถูกต้องจะทำการเก็บ password ไว้ใน object RememberPassword
			$rmp = RememberPassword::model()->findByAttributes(array('user_id'=>Yii::app()->user->id,'lesson_id'=>$id));
			if($rmp === null){
				$rmp = new RememberPassword;
			}
			
			//ถ้าหากมีตัวแปร พาสเวิร์ดส่งเข้ามา จะทำการเก็บพาสเวิร์ดลงใน RememberPassword
			if(isset($_POST['lessonpass']['password']))
			{
				$rmp->user_id = Yii::app()->user->id;
				$rmp->lesson_id = $lesson->lesson_id;
				$rmp->password = md5($_POST['lessonpass']['password']);
				if($rmp->password === $lesson->password){
					$rmp->save();
					$this->redirect($id); // reload page
				}
			}
			
			//ถ้าหากพาสเวิร์ดไม่ถูกต้อง จะทำการเรนเดอร์ไฟล์ viewPassword.php
			if($rmp->password !== $lesson->password){
				$this->layout = '//layouts/pageClean';
				$this->render('viewPassword',array('lesson'=>$lesson));
				Yii::app()->end();
			}
			$this->render('view',array('lesson'=>$lesson));
		}
	}
	
	// 
	public function actionCreate()
	{
		$lesson = new Lesson;
		if(isset($_POST['create'])){
			$lesson->attributes = $_POST['create']; // set ค่าเข้าไปใน object lesson
			$lesson->lesson_date = date('Y-m-d H:i:s'); // set ค่า date (เวลาที่สร้าง)
			$lesson->user_id = Yii::app()->user->id; // set user_id
			$lesson->password = md5($lesson->password); // พาสเวิร์ดในการเข้าถึงตัว lesson
			
			if($lesson->save()){
				if(Yii::app()->request->isAjaxRequest){
					echo CJSON::encode(array('success'=>true,'lesson'=>$lesson->attributes));
					Yii::app()->end();
				}
				// รีไดเรคไปยัง lesson/lesson_id (id ของ lesson ที่สร้างใหม่)
				$this->redirect($this->createUrl('lesson/'.Yii::app()->db->getLastInsertID()));
			}
			else{
				if(Yii::app()->request->isAjaxRequest)
				{
					echo CJSON::encode(array('success'=>false,'errors'=>$lesson->errors));
					Yii::app()->end();
				}
			}
		}
		
		if(Yii::app()->request->isAjaxRequest){
			$this->renderPartial('create'); // reder โดยไม่มี layout
		}
		else{
			$this->render('create');
		}
	}
	
	public function actionUpdate()
	{
		echo 'update';
	}
	
	public function actionDelete($id)
	{
		$lesson = Lesson::model()->with('chapters')->findByPk($id);
		if($lesson->delete()){
			echo CJSON::encode(array('success'=>true));
		}
		else{
			echo CJSON::encode(array('success'=>false, 'errors'=>$lesson->errors));
		}
	}
	
	// ค้นหาจาก ชื่อผู้สร้าง lesson และชื่อ lesson
	public function actionSearch()
	{
		$criteria = new CDbCriteria;
		$criteria->select = "*";
		$criteria->join = "INNER JOIN user ON user.user_id = t.user_id";
		
		$search = array('lesson_name'=>'','user_name'=>'');
		
		// ถ้าหากมีการส่งค่า ชื่อ lesson เข้ามา ให้เพิ่มเงื่อนไขการหาด้วย lesson_name
		if(isset($_POST['search']['lesson_name'])){
			$criteria->compare('lesson_name', $_POST['search']['lesson_name'], true,'OR');
			$search['lesson_name'] = $_POST['search']['lesson_name'];
		}
		if(isset($_POST['search']['user_name'])){
			$criteria->compare('user_name', $_POST['search']['user_name'], true,'OR');
			$search['user_name'] = $_POST['search']['user_name'];
		}
		
		$lessons = Lesson::model()->findAll($criteria); // ค้นหาจากทั้งหมด โดยใช้เงื่อนไขตาม object criteria
		
		if(Yii::app()->request->isAjaxRequest){
			$this->renderPartial('search',array('lessons' => $lessons,'search' => $search));
		}
		else{
			$this->render('search',array('lessons' => $lessons,'search' => $search));
		}
	}
}